In high-end data processing systems, such as data storage subsystems, host adapters interconnect the system with host units (either directly or through a network or fabric) and device adapters interconnect the system with various peripheral devices, such as disk arrays. SMP (symmetric multiprocessing) is commonly used to manage multiple CPUs in multi-processor systems. The processors in an SMP managed system access common memory and input/output (I/O) resources. DMA (direct memory access) is a commonly used function which allows peripheral devices to exchange data without tying up the CPU.
In current designs, contiguous DMA memory is mapped for all adapters to access the SMP memory space. And, while such a method provides a common control area which is accessible to all adapters, current designs have numerous drawbacks. First, the entire generic (common) DMA memory space is mapped. Consequently, space which should remain unmapped is exposed to improper writes by adapters. Second, the entire space is mapped in a single operation. Consequently, it is difficult to halt “runaway” memory writes as they occur. And, third, because the entire generic DMA memory space is mapped for all adapters on a system platform, any adapter may write to any partition in a multiple partition platform and cross-partition memory writes may not be preventable.
Consequently, a need remains for effective DMA mapping which overcomes the foregoing drawbacks.